\section{The Feedback Module}
\label{feedback}
Although a recommender system can be fully functional without a feedback module, a feedback module is often regarded as an important module of recommender systems. Recommender systems with feedback modules can use the additional information at their hand to learn and improve recommendations by being more precise and accurate.
An important and much needed feature of a recommender system, one must be careful when designing such a module as most systems require explicit  feedback and often at a significant level of user involvement \cite{feedback_module1}.
Feedback is usually made up of two distinct categories, namely, implicit and explicit feedback. The former is used when the system attempts to estimate what the user may be interested in which can act as a substitute for explicit feedback where users explicitly mark recommendations as relevant \cite{feedback_module2}. 

\subsection{``I like it"}
\label{subsubsec:feed_sol}
Having considered the above we decided to implement some form of user feedback in our system. User feedback will greatly improve recommendations by the means of adaptation and will trigger user satisfaction. As mentioned before, the idea of involving the user to provide feedback can often be repelling and obtrusive. We need to think of ways to capture the feedback in an intelligent, yet simple, and user friendly way.

Since recommendations can still be quite accurate without user feedback, we give users the option of providing feedback and therefore not imposing it on them. This enables the user to act freely and use their own judgement whether they want to provide feedback or not. However, some sort of restriction does have to be enforced. Users will not be able to freely write feedback as it will involve natural language processing and make the solution extremely complex, but just be given an option of whether they like the recommendation. 
With an approach like this, the user is not required to provide feedback and therefore we have achieved an element of unobtrusiveness in the system with respect to user feedback.

Figure~\ref{reclike}, a part of the GUI, shows how our system allows the user to provide feedback to a recommendation.

\begin{figure}[H] 
	\begin{center}
	\includegraphics[width=4in]{resources/rec_like.png}
	\caption{ Ability of user to provide feedback\label{reclike} }
	\label{reclike}
	\end{center}
\end{figure}
As it can be seen, each recommendation is equipped with an \emph{``i like it"} button. Clicking on the button will give a positive feedback and will inform the user that feedback for the respective recommendation has been received. While this is done in the background, the user has no idea what changes may result from this action. 
An HTTP GET request is initiated with JavaScript which calls the \emph{iLike.java} servlet in the \emph{isquirrel.servlets} package.

Listing~\ref{lst:rec} shows a fraction of the \emph{iLike.java} servlet which updates recommendations dynamically when the user provides feedback.
\newpage
\lstset{language=Java}
\lstset{backgroundcolor=\color{white}}
%\lstset{numbers=left, numberstyle=\tiny, stepnumber=1, numbersep=5pt}
\lstset{keywordstyle=\color{red}\bfseries}
\begin{lstlisting}[frame=tb, caption=Effect of feedback on recommendations, label=lst:rec]
  List<Property> = DBpedia.getPageInformation(likedURL);	
  Iterator<Property> iter = props.iterator();
  while (iter.hasNext()) {
      u.addProperty(iter.next());
  } 			
  //Updating dynamic recommendations
  DynamicRecommender.updateRecommendations(u);
\end{lstlisting}

\subsection{Alternative method of providing feedback}
Our bookmarklet, which is described in Section \ref{sec:bookmarklet} in detail, can greatly improve the recommendations by a similar approach as detailed in \ref{subsubsec:feed_sol}.
Clicking the \emph{``i like it"} button on the user's bookmarklet while browsing a Wikipedia article enables the same functionality to be triggered listing~\ref{lst:rec} shows.

Figure~\ref{ilike_diagram} shows the two different ways we adopted to change dynamic recommendations using user feedback.

\begin{figure}[H] 
	\begin{center}
	\includegraphics[width=4in, height=2.4in]{resources/ilike_diagram.png}
	\caption{The Feedback process\label{ilike_diagram} }
	\label{ilike_diagram}
	\end{center}
\end{figure}

\subsection{Further improvements}
As a further extension, we decided to extend the feedback module to Video Recommendations rather than just Article recommendations. Due to time constraints, the functionality of \emph{``i like it"} in Videos, as shown in Figure~\ref{utube_like} only comes useful when the people that follow a particular user are interested in seeing what they like.
If time allowed, we would gather a number of semantic properties for the most popular type (genre) of videos and map them onto DBpedia properties. This would be something of particular interest to a user, since the recommended articles would include articles based on what videos they have liked.

As an example to illustrate the process, user A likes a YouTube video whose most popular video tag (keyword) is pop music. We could map pop music with semantic-equivalent ontologies such as \emph{owl:MusicGenre} which is one of its \emph{rdf:types}.
Mapping pop music to several properties is considered to be a long process so careful thought and design needs to be put into it. Having this information onto our hands one can easily retrieve several articles on other Music Genres and other domains.

In our future plans, we are thinking of the possibility of extending the feedback module by allowing users to give negative feedback for a recommendation. Its increased time complexity coupled with the project's deadline left us with no time to consider its implementation and potential use. 
\begin{figure}[H] 
	\begin{center}
	\includegraphics[width=4in]{resources/utube_like.pdf}
	\caption{YouTube video extract\label{utube_like} }
	\label{utube_like}
	\end{center}
\end{figure}



